知识点名称:加速度传感器

编号: K12-6

前驱知识点编号:K12-1,K12-2

作者:

讲义内容:

加速度传感器使用的是图12.1显示的坐标轴系统,加速度传感器获得原始数据包括x,y,z三个轴方向的加速度,其中包含了重力加速度,这个值大约是9.81

$$m/s^2$$ 。
下面利用加速度传感器来模仿微信摇一摇的功能。程序的主要逻辑非常简单,只需要检测手机在X轴、Y轴、Z轴上的加速度,当达到了预定值(任意一个轴上的加速度大于等于15$$m/s^2$$)就可以认为用户摇动了手机,从而触发摇一摇的逻辑。
首先创建一个AccelermeterSensorTest的工程,然后修改MainActivity中的代码,如下所示:
```public class MainActivity extends Activity {

private SensorManager sensorManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor = sensorManager
            .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(listener, sensor,
            SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (sensorManager != null) {
        sensorManager.unregisterListener(listener);
    }
}

private SensorEventListener listener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent event) {
        // 加速度可能会是负值,所以要取它们的绝对值
        float xValue = Math.abs(event.values[0]);
        float yValue = Math.abs(event.values[1]);
        float zValue = Math.abs(event.values[2]);
        if (xValue > 15 || yValue > 15 || zValue > 15) {
            // 认为用户摇动了手机,触发摇一摇逻辑
            Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
};

} ```
当你摇动你的手机,就会看到Toast提示出来了。

results matching ""

    No results matching ""